/*
 * Criado em 30/03/2004
 *
 * � 2004 saci.org
 * liquinhamaria@hotmail.com
 */
package saci.reptil.util;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author saci
 */
public class Util {

    public static final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

    /**
     * Controla os caracteres digitados, aceitando somente num�ricos
     */
    public static class NumericListener extends KeyAdapter {

        @Override
        public void keyTyped(KeyEvent e) {
            if (e.getKeyChar() == (char) KeyEvent.VK_BACK_SPACE) {
                return;
            }

            if (!(e.getKeyChar() >= '0' && e.getKeyChar() <= '9')) {
                e.setKeyChar(KeyEvent.CHAR_UNDEFINED);
            }
        }
    }

    public static String obtemData(String formato) {
        return obtemData(formato, new Date());
    }

    public static String obtemData(String formato, Date data) {
        SimpleDateFormat sdf = new SimpleDateFormat(formato);
        return sdf.format(data);
    }

    /**
     * Retorna a data de hoje (dd/MM/yyyy)
     *
     * @return A data atual
     */
    public static String obtemData() {
        return sdf.format(new Date());
    }

    /**
     * Retorna a data passada por parametro (dd/MM/yyyy)
     *
     * @param data a data que deve ser retornada
     * @return A data com o formato dd/MM/yyyy
     */
    public static String obtemData(Date data) {
        return sdf.format(data);
    }

    /**
     * Transforma a data em inteiro com <b>Separador "/"</b>
     *
     * @see Util#dataParaInt(String, String)
     */
    public static int dataParaInt(String data) {
        return dataParaInt(data, "/");
    }

    /**
     * Transforma uma data em string (dd-MM-yyyy) para inteiro
     * no formato yyyyMMdd :: 20031225
     *
     * @param data a data
     */
    public static int dataParaInt(String data, String separador) {
        String[] d = data.split(separador);
        if (d.length == 3) {
            if (d[0].length() != 2) {
                d[0] = '0' + d[0];
            }
            if (d[1].length() != 2) {
                d[1] = '0' + d[1];
            }
            if (d[2].length() != 4) {
                d[2] = "20" + d[2];
            }

            return Integer.parseInt(d[2] + d[1] + d[0]);
        } else {
            return dataParaInt(obtemData(), "/");
        }
    }

    /**
     * Transforma uma data em inteiro (yyyyMMdd) para string (dd/MM/yyyy)
     *
     * @param data a data
     */
    public static String intParaData(int data) {
        String d = String.valueOf(data);
        if (d.length() == 8) {
            String dia = d.substring(6);
            String mes = d.substring(4, 6);
            String ano = d.substring(0, 4);
            return dia + "/" + mes + "/" + ano;
        } else {
            return null;
        }
    }
}
